//模式匹配 相当于switch..case语句
//1.switch case
var sign = 0
var ch1 = '-'
ch1 match {
  case '+' => sign = 1
  case '-' => sign = -1
  //这里相当于java的defaultx
  case _ => sign = 0
}



//2.Scala的守卫:匹配某种类型的所有值

var ch2='6'
var digit:Int = -1
ch2 match {
  case '+' => println("这是一个加号")
  case '-' => println("这是一个减号")
  //这里相当于java的default 匹配了所有的值
  case _  if Character.isDigit(ch2)=> digit=Character.digit(ch2,10)
  case _ => println("其他类型")
}

//3.在模式匹配中使用变量
var str3="Hello world"
//这里ch =  str3(7)
str3(7) match {
  case '+' => println("这是一个加号")
  case '-' => println("这是一个减号")
  case ch => println("这个字符是:"+ch)
}

str3(7)

//4.匹配类型
//相当于java的Object
var v4:Any=100.0
v4 match {
  case x:Int => println("这是一个整数类型")
  case s:String => println("这是一个字符串类型")
  case m:Double => println("这是一个浮点类型")
  case _ => println("其他类型")
}


//5.匹配数组和列表
var myArray=Array(1,2,3)
myArray.size

myArray match {
  case Array(0) =>println("只有一个0")
  case Array(x,y)=>println("该数组包含两个元素,和是:"+(x+y))
  case Array(x,y,z) =>println("该数组包含三个元素,和是:"+(x+y+z))
  case Array(x,_*)=>println("默认匹配,和是:"+(myArray.sum))
}


